package com.tm.util;

/**
 * @author Rocky
 * @create 2022-10-07 11:17
 */
public class NearDistanceUtil {
    /**

     * 默认地球半径

     */

    private static double EARTH_RADIUS = 6371000;//赤道半径(单位m)

    /**

     * 转化为弧度(rad)

     * */

    private static double rad(double d)

    {

        return d * Math.PI / 180.0;

    }

    /**

     * @param lon1 第一点的精度

     * @param lat1 第一点的纬度

     * @param lon2 第二点的精度

     * @param lat2 第二点的纬度

     * @return 返回的距离，单位m

     * */

    public static double GetDistance(double lon1,double lat1,double lon2, double lat2) {

        double radLat1 = rad(lat1);

        double radLat2 = rad(lat2);

        double a = radLat1 - radLat2;

        double b = rad(lon1) - rad(lon2);

        double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));

        s = s * EARTH_RADIUS;

        s = Math.round(s * 10000) / 10000;

        return s;

    }

    public static void main(String[] args) {
        double v = GetDistance(113.63141921, 34.75343885, 113.63241921, 34.75343885);
        System.out.println("当前位置距离目标位置的距离是："+v+"米");
    }
}

